package com.zhaoqi.hr.dto.request;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 合同创建请求DTO
 */
public class ContractCreateRequest {
    
    /**
     * 岗位申请ID
     */
    @NotNull(message = "岗位申请ID不能为空")
    private Long jobApplicationId;
    
    /**
     * 合同标题
     */
    @NotBlank(message = "合同标题不能为空")
    private String contractTitle;
    
    /**
     * 工作内容描述
     */
    @NotBlank(message = "工作内容描述不能为空")
    private String workDescription;
    
    /**
     * 工作地点
     */
    @NotBlank(message = "工作地点不能为空")
    private String workLocation;
    
    /**
     * 工作开始时间
     */
    @NotNull(message = "工作开始时间不能为空")
    private LocalDateTime startTime;
    
    /**
     * 工作结束时间
     */
    @NotNull(message = "工作结束时间不能为空")
    private LocalDateTime endTime;
    
    /**
     * 薪资金额
     */
    @NotNull(message = "薪资金额不能为空")
    @DecimalMin(value = "0.01", message = "薪资金额必须大于0")
    private BigDecimal salary;
    
    /**
     * 薪资类型（按小时/按天/按月）
     */
    @NotBlank(message = "薪资类型不能为空")
    private String salaryType;
    
    /**
     * 付款方式
     */
    private String paymentMethod;
    
    /**
     * 其他条款
     */
    private String otherTerms;
    
    /**
     * 备注
     */
    private String remark;

    // Getter and Setter methods
    public Long getJobApplicationId() {
        return jobApplicationId;
    }

    public void setJobApplicationId(Long jobApplicationId) {
        this.jobApplicationId = jobApplicationId;
    }

    public String getContractTitle() {
        return contractTitle;
    }

    public void setContractTitle(String contractTitle) {
        this.contractTitle = contractTitle;
    }

    public String getWorkDescription() {
        return workDescription;
    }

    public void setWorkDescription(String workDescription) {
        this.workDescription = workDescription;
    }

    public String getWorkLocation() {
        return workLocation;
    }

    public void setWorkLocation(String workLocation) {
        this.workLocation = workLocation;
    }

    public LocalDateTime getStartTime() {
        return startTime;
    }

    public void setStartTime(LocalDateTime startTime) {
        this.startTime = startTime;
    }

    public LocalDateTime getEndTime() {
        return endTime;
    }

    public void setEndTime(LocalDateTime endTime) {
        this.endTime = endTime;
    }

    public BigDecimal getSalary() {
        return salary;
    }

    public void setSalary(BigDecimal salary) {
        this.salary = salary;
    }

    public String getSalaryType() {
        return salaryType;
    }

    public void setSalaryType(String salaryType) {
        this.salaryType = salaryType;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public String getOtherTerms() {
        return otherTerms;
    }

    public void setOtherTerms(String otherTerms) {
        this.otherTerms = otherTerms;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}
